﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MetadataBasedConfigArch.Framework.Model;

namespace MetadataBasedConfigArch.Framework
{
    public interface IConfigurable
    {
        Int64 TenantID { get; set; }

        String ConfigMetaContent { get; }

        Int64 DataID { get; }

        IConfigMeta ConfigMetaInst { get; set; }
        
        IEnumerable<KeyValuePair<String, Object>> ExtendProperties { get; set; }

        IEnumerable<IConfigMetaConfigData> ConfigDatasInst { get; set; }

        void LoadConfigurableInfos(IMetadataBasedEntityProvider entityProvider);

        void SetConfigurableInfo(String configContent, Object value);

        Object GetConfigurableInfo(String configContent);
    }
}
